import Vue from 'vue'
import App from './App.vue'
import router from './router'
// 引入样式文件
// import './css/login-view.css'    相对路径的写法
import '@/css/login-view.css'      //绝对路径的写法 : 全局引入
import '@/css/global.css'

//引入Element ui
import ElementUI, {Message} from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'

Vue.use(ElementUI)               // 使用Element ui
Vue.use(Message.name, Message)  // 引入消息组件

import axios from 'axios'       // 引入axios

// 配置axios的默认访问路径：
axios.defaults.baseURL = 'http://localhost:8090';

// 定义一个前端的拦截器，配置每次发送请求时，都带上token
// 添加请求拦截器
axios.interceptors.request.use(function (config) {
    // 1: 得到token
    let token = sessionStorage.getItem("token");
    // 2: 把token带后端去
    console.log("拦截器里的token---->:"+token )
    if(token){
        // 如果有token则设置到头里面
        config.headers['token'] = token;
    }

    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加一个响应拦截器：
// 添加响应拦截器
axios.interceptors.response.use(function (response) {
    console.log("------------ web 响应拦截 -----------------")
    console.log(response);

    if(response.data.status == 501 || response.data.status == 502){
        // 应该去登录 (两种写法都可以)
        // router.push("/");
        vm.$router.push("/");

    }else if(response.data.status != 200){
        Message({
            type: "error",
            message: response.data.message,
            duration: 2000
        });
    }
    // 请求错误，有两种：一种就是后端的异常
    // 还有一种是认证异常（登录无效）
    return response;
}, function (error) {
    // 对响应错误做点什么
    return Promise.reject(error);
});

Vue.prototype.$axios = axios    // 把axios绑定到Vue的原型
Vue.config.productionTip = false // 它的主要目的是在开发模式下隐藏 Vue.js 的生产提示。
let vm = new Vue({
    router,
    render: h => h(App)
}).$mount('#app')

